<script setup>
import { onBeforeMount, ref } from 'vue'
import { onShow } from '@dcloudio/uni-app'
import { useStore } from 'vuex'
import { visit } from '@/api/visit'
const store = useStore()

// 生成或获取临时ID
let uuid = uni.getStorageSync('tempId')
if (!uuid) {
	uuid = Math.random().toString(36).substring(2);
	uni.setStorageSync('tempId', uuid);
}

// 上次获取用户信息的时间戳
let lastGetUserInfoTime = 0
// 获取用户信息的防抖定时器
let getUserInfoTimer = null

// 防止短时间内重复获取用户信息
const debounceGetUserInfo = () => {
	// 清除之前的定时器
	if (getUserInfoTimer) {
		clearTimeout(getUserInfoTimer)
	}
	
	const now = Date.now()
	// 如果距离上次获取用户信息不足3秒，则使用延时调用
	if (now - lastGetUserInfoTime < 3000) {
		console.log('App onShow: 延迟获取用户信息')
		getUserInfoTimer = setTimeout(fetchUserInfo, 3000)
		return
	}
	
	// 直接获取用户信息
	fetchUserInfo()
}

// 获取用户信息的实际逻辑
const fetchUserInfo = () => {
	// 更新时间戳
	lastGetUserInfoTime = Date.now()
	
	// 获取用户信息
	if (store.state.user.token) {
		console.log('App onShow: 获取用户信息')
		store.dispatch('user/getUserInfo')
	} else if (store.state.user.phoneNumber) {
		// 有手机号但没有令牌，尝试登录
		store.dispatch('user/login').then(res => {
			store.dispatch('user/getUserInfo')
		})
	}
}

// #ifdef MP-WEIXIN
// 检查小程序版本更新
const checkUpdate = () => {
  const updateManager = uni.getUpdateManager();
  
  // 检查是否有新版本
  updateManager.onCheckForUpdate(function (res) {
    console.log('小程序是否有新版本:', res.hasUpdate);
  });

  // 新版本下载完成
  updateManager.onUpdateReady(function () {
    uni.showModal({
      title: '更新提示',
      content: '新版本已经准备好，是否重启应用？',
      success(res) {
        if (res.confirm) {
          // 重启应用
          updateManager.applyUpdate();
        }
      }
    });
  });

  // 新版本下载失败
  updateManager.onUpdateFailed(function () {
    uni.showModal({
      title: '更新提示',
      content: '新版本下载失败，请删除当前小程序后重新搜索打开',
    });
  });
}
// #endif

onShow(() => {
	// 防抖处理，避免拨打电话等操作后返回应用时频繁获取用户信息
	debounceGetUserInfo()
	
	// #ifdef MP-WEIXIN
	// 检查小程序更新
	checkUpdate()
	// #endif
	
	visit('今日浏览数')
	//#ifdef MP-WEIXIN
	wx.showShareMenu({
		withShareTicket: true,
		menus: ['shareAppMessage', 'shareTimeline']
	});
	//#endif
})
</script>

<style>
	/*每个页面公共css */
</style>
